package com.lj.back.manage.scaffold.module.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lj.back.manage.scaffold.module.sys.DTO.SysMenuDTO;
import com.lj.back.manage.scaffold.module.sys.DTO.SysMenuPageQuery;

import javax.validation.constraints.NotNull;
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * 后台管理---菜单service
 * @author lv
 * @version 1.0.0
 */
public interface SysMenuService {

    /**
     * 根据角色获取菜单列表
     * @param roleId 角色ID
     * @return 菜单列表
     */
    Set<SysMenuDTO> listMenuByRole(Long roleId);

    /**
     * 分页查询菜单列表
     * @param pageQuery
     * @return
     */
    IPage<SysMenuDTO> listMenus(SysMenuPageQuery pageQuery);

    /**
     * 获取全部菜单列表
     * @return
     */
    LinkedHashSet<SysMenuDTO> listMenus();

    /**
     * 新增菜单
     * @param menu
     * @return
     */
    Long addMenu(SysMenuDTO menu);

    /**
     * 删除菜单
     * @param id
     * @return
     */
    boolean removeMenu(@NotNull(message = "{menu.id.notnull}") long id);

    /**
     * 更新菜单
     * @param menu
     * @return
     */
    boolean updateMenu(SysMenuDTO menu);

    /**
     * 根据ID获取菜单详情
     * @param id
     * @return
     */
    SysMenuDTO getMenuInfo(@NotNull(message = "{menu.id.notnull}") long id);
}
